﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.DataContract
{
    /// <summary>
    /// Contrato de dados para tipo de beneficio de politica de corretagem
    /// </summary>
    [DataContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Corretagem.Service.DataContract", Name = "TipoBeneficio")]
    public class TipoBeneficio
    {
        #region Atributos

        /// <summary>
        /// Codigo do tipo de benefício da política de corretagem
        /// </summary>
        private int? _codigo;

        /// <summary>
        /// Descrição do tipo de benefício da política de corretagem
        /// </summary>
        private string _descricao;

        /// <summary>
        /// Tipo de tratamento do benefício da política de corretagem
        /// </summary>
        private Enum.TipoTratamentoBeneficio? _tratamento;

        /// <summary>
        /// Tipo de base de verificação do benefício da política de corretagem
        /// </summary>
        private Enum.TipoBaseVerificacao? _baseVerificacao;

        #endregion

        #region Propriedades

        /// <summary>
        /// Codigo do tipo de benefício da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public int? Codigo
        {
            get
            {
                return _codigo;
            }
            set
            {
                _codigo = value;
            }
        }

        /// <summary>
        /// Descrição do tipo de benefício da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public string Descricao
        {
            get
            {
                return _descricao;
            }
            set
            {
                _descricao = value;
            }
        }

        /// <summary>
        /// Tipo de tratamento do benefício da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public Enum.TipoTratamentoBeneficio? Tratamento
        {
            get
            {
                return _tratamento;
            }
            set
            {
                _tratamento = value;
            }
        }

        /// <summary>
        /// Tipo de base de verificação do benefício da política de corretagem
        /// </summary>
        [DataMember(IsRequired = false)]
        public Enum.TipoBaseVerificacao? BaseVerificacao
        {
            get
            {
                return _baseVerificacao;
            }
            set
            {
                _baseVerificacao = value;
            }
        }

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor TipoBeneficio
        /// </summary>
        public TipoBeneficio() { }

        /// <summary>
        /// Construtor TipoBeneficio
        /// </summary>
        /// <param name="codigo"></param>
        /// <param name="descricao"></param>
        /// <param name="tratamento"></param>
        /// <param name="baseVerificacao"></param>
        public TipoBeneficio(int? codigo, string descricao, Enum.TipoTratamentoBeneficio? tratamento, Enum.TipoBaseVerificacao? baseVerificacao)
        {
            this._codigo = codigo;
            this._descricao = descricao;
            this._tratamento = tratamento;
            this._baseVerificacao = baseVerificacao;
        }

        #endregion
    }
}